import { bag } from '@src/db/src/models/user/user_bag'
import { user } from '@src/db/src/models/user/user'

/**
 * 向背包添加物品，若已存在则叠加数量，否则新建
 * @param uid 用户uid
 * @param add_name 物品名
 * @param add_count 数量
 * @returns Promise<boolean> 成功返回true，失败抛异常
 */

export async function addIntoBag(
  uid: number,
  add_name: string,
  add_count: number
): Promise<boolean> {
  // 查找用户是否存在
  const userInfo = await user.findOne({ where: { uid } })
  if (!userInfo) throw new Error('用户不存在')

  // 查找背包中是否已有该物品
  const bagItem = await bag.findOneValue({
    where: { uid, item_name: add_name }
  })

  if (bagItem) {
    // 已有则叠加数量
    await bag.update(
      { count: bagItem.count + add_count },
      { where: { id: bagItem.id } }
    )
  } else {
    // 没有则新建
    await bag.create({
      uid: uid,
      item_name: add_name,
      count: add_count,
      attr: ''
    })
  }
  return true
}
